<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 09-03-2015
class Alumno extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los alumnos activos o inactivos pero NO los borrados (-1)
	function consultar(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Cargo el modelo donde estan los datos de los alumnos registrados para pedirle un listado con todos ellos
			$this->load->model('m_alumno');
			
			//Busco todos los alumnos activos o inactivos, pero no los borrados.
			$listadoAlumnos = $this->m_alumno->buscar();
			
			//Le paso el listado de todos los alumnos a la vista para que los muestre en una tabla
			$datos['alumnos'] = $listadoAlumnos;
			
			//Cargo la vista donde se muestra la tabla de alumnos y la guardo en una variable para pasarsela a la vista principal
			$datosPrincipal['vista'] = $this->load->view('v_alumnos', $datos, true);
			
			//Cargo la vista principal con los datos de la vista recien generada
			$this->load->view('v_sistema', $datosPrincipal);
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar al alumno pasado por la url
	function eliminar($idAlumno=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Segunda comprobacion: Que idAlumno pasado sea numerico y mayor que cero.
			if(is_numeric($idAlumno) && $idAlumno>0){
				//Cargo el modelo donde estan los datos de los alumnos registrados
				$this->load->model('m_alumno');
				
				//Busco al alumno que hay que eliminar
				$alumno = $this->m_alumno->get($idAlumno);
				
				//Tercera comprobacion: Que el alumno pasado por la url sea existente
				if($alumno->num_rows() == 1){
					//Elimino al alumno pasado por la url
					$respuesta = $this->m_alumno->eliminar($idAlumno, $this->session->userdata('idUsuarioLog'));
					
					//Busco todos los alumnos activos o inactivos, pero no los borrados que quedaron
					$listadoAlumnos = $this->m_alumno->buscar();
					
					//Le paso el listado de todos los alumnos a la vista para que los muestre en una tabla
					$datos['alumnos'] = $listadoAlumnos;
					
					//Cargo la vista donde se muestra la tabla de alumnos
					$this->load->view('v_alumnos', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
			
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de un alumno
	function modificar($idAlumno=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el estado del alumno a modificar. 
			//Ademas que se haya pasado por la url el id del alumno a modificar
			if(is_numeric($idAlumno) && $idAlumno>0 && ($this->input->post('estadoAlumno',true) == '1' || $this->input->post('estadoAlumno',true) == '0')){		
				//Cargo el modelo donde estan los datos de los alumnos
				$this->load->model('m_alumno');
				
				//Busco al alumno que hay que modificar
				$alumno = $this->m_alumno->get($idAlumno);
				
				//Tercera comprobacion: Que el alumno pasado por la url sea existente
				if($alumno->num_rows() == 1){
					//Formato fecha ARGENTINA
					$fecha1=$this->input->post('fechaIngresoAlumno',true);
					//Formato fecha EEUU
					if($fecha1!="")$fecha2=date("Y-m-d",strtotime($fecha1));
					else $fecha2=null;
					
					//Modificamos el alumno
					$resultado = $this->m_alumno->modificar($idAlumno, $this->input->post('legajo',true),$fecha2,$this->input->post('estadoAlumno',true));
								
					if($resultado == 1){
						echo("<script> alert('El alumno se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('El alumno no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo crea un alumno si no existe y si existe, lo modifica.
	function actualizar($idPersona=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el estado del alumno a crear o modificar.
			//Ademas que se haya pasado por la url el id de la persona a crear o a modificarle el alumno
			if(is_numeric($idPersona) && $idPersona>0 && ($this->input->post('estadoAlumno',true) == '1' || $this->input->post('estadoAlumno',true) == '0')){		
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para comprobar si existe
				$persona = $this->m_persona->get($idPersona);
				
				//Tercera comprobacion: Que la persona pasada por la url sea existente
				if($persona->num_rows() == 1){
					//Cargo el modelo donde estan los datos de los alumnos
					$this->load->model('m_alumno');
					
					//Busco al alumno para comprobar si existe o no
					$alumno = $this->m_alumno->get2($idPersona);
					
					//Formato fecha ARGENTINA
					$fecha1=$this->input->post('fechaIngresoAlumno',true);
					//Formato fecha EEUU
					if($fecha1!="")$fecha2=date("Y-m-d",strtotime($fecha1));
					else $fecha2=null;
					
					//Cuarta comprobacion: Si la persona ya es alumno, modifico los datos, caso contrario, lo creo.
					//MISMA SITUACION QUE EN EL CASO DE USUARIOS, SOLO EL ELSE ES EJECUTADO. EL CASO NORMAL NUNCA SE EJECUTA.
					if($alumno->num_rows() == 1){
						//Modificamos el alumno
						$resultado = $this->m_alumno->modificar($alumno->row()->idAlumno, $this->input->post('legajo',true), $fecha2, $this->input->post('estadoAlumno',true));
					}else{
						//Creamos el alumno
						$resultado = $this->m_alumno->crear($idPersona, $this->input->post('legajo',true), $fecha2, $this->input->post('estadoAlumno',true), $this->session->userdata('idUsuarioLog'));					
					}					
					
					if($resultado == 1){
						echo("<script> alert('El alumno se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('El alumno no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra los tutores del alumno logueado.
	//Ultima verificación: 13-10-2014
	function misTutores(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que la variables de sesion del alumno esten creadas e inicializadas.
			if(is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Busco todos los tutores del alumno logueado
				$listadoTutores = $this->m_tutorxalumno->buscarTutoresActivos(" AND tutorxalumno.idAlumno=".$this->session->userdata('idAlumnoLog'));
				
				//El alumno debe tener al menos un tutor.
				if($listadoTutores->num_rows()>0){
					//Cargo el modelo donde estan los datos de los tutores
					$this->load->model('m_tutor');
					
					//Le paso el listado de todos los tutores a la vista para que muestre los perfiles
					$datos['tutores'] = $listadoTutores;
					
					//Cargo la vista donde se muestra los perfiles de los tutores del alumno logueado y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_alumnos_mis_tutores', $datos, true);
					
					//Cargo la vista principal con los datos de la vista perfil
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El alumno no tiene tutores.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//No se han inicializado los parametros necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra los compañeros del alumno logueado segun el ciclo pasado por la url
	//Ultima verificación: 13-10-2014 ; 29-10-2014
	function misCompaneros($idCicloLectivo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que sea alumno.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que la variables de sesion del alumno esten creadas e inicializadas.
			if(is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Tercera comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Igual que cero quiere decir que hay que seleccionar el vigente.
				if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0){
					//Cargo el modelo donde estan los datos de los ciclos lectivos
					$this->load->model('m_ciclo_lectivo');
					
					//Busco al ciclo lectivo para corroborar que exista
					$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
					
					//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero.
					if($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0){
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado.
						//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								//Le paso a la vista el id del ciclo lectivo vigente
								$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								//No hay ciclo lectivo seleccionado ni vigente
								$datos['idCicloLectivoSel'] = 0;
							}
						}else{
							//Le paso a la vista el id del ciclo lectivo pasado por la url
							$datos['idCicloLectivoSel'] = $idCicloLectivo;
						}
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Restricciones a la consulta de alumnos segun el ciclo lectivo pasado y el alumno logueado. Y tambien a las divisiones que cursa el alumno.
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						$restriccion1 = "";
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								$restriccion1 = " AND curso.idCicloLectivo=0";
							}
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;
						}
						
						//Busco las divisiones a la que pertenece el alumno logueado.
						$restriccion2 = " AND alumnoxdivision.idAlumno=".$this->session->userdata('idAlumnoLog');
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo el modelo donde estan los datos de los alumnos asignados a una division para pedirle todas las divisiones a la que asiste el alumno logueado.
						$this->load->model('m_alumnoxdivision');
						
						//Busco todas las divisiones segun las restricciones
						$listadoDivisiones = $this->m_alumnoxdivision->buscarActivos($restriccion2);
						
						//Le paso el listado de todas las divisiones donde esta asignado el alumno a la vista para que los muestre en un combo de filtrado
						$datos['divisiones'] = $listadoDivisiones;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Tambien vamos a pedirle todos los alumnos de la division que cursa el alummno logueado segun el ciclo seleccionado.
						//Busco todos los alumnos que cursan junto al alumno logueado en el ciclo seleccionado excepto el.
						$listadoAlumnos = $this->m_alumnoxdivision->buscarActivos(" AND alumnoxdivision.idAlumno<>".$this->session->userdata('idAlumnoLog')." AND alumnoxdivision.idDivision IN (SELECT alumnoxdivision.idDivision FROM alumnoxdivision WHERE alumnoxdivision.idAlumno=".$this->session->userdata('idAlumnoLog')." $restriccion1 AND alumnoxdivision.estado=1)");
						
						//Le paso el listado de todos los compañeros del alumno logueado en la division seleccionada.
						$datos['alumnos'] = $listadoAlumnos;
						
						//Cargo la vista donde se muestra los compañeros del alumno logueado y la guardo en una variable para pasarsela a la vista principal
						$datosPrincipal['vista'] = $this->load->view('v_alumnos_mis_companeros', $datos, true);
						
						//Cargo la vista principal con los datos de la vista
						$this->load->view('v_sistema', $datosPrincipal);
					} else {
						//El registro no existe.
						//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
						$this->session->sess_destroy();
						//Lo redirigimos al login
						redirect(site_url("inicio"));
					}
				} else {
					//No se han pasado los parametros necesarios para visualizar los registros.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//No se han inicializado los parametros necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra los docentes del alumno logueado segun el ciclo pasado por la url
	//Ultima verificación: 30-10-2014
	function misDocentes($idCicloLectivo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que sea alumno.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que la variables de sesion del alumno esten creadas e inicializadas.
			if(is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Tercera comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Igual que cero quiere decir que hay que seleccionar el vigente.
				if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0){
					//Cargo el modelo donde estan los datos de los ciclos lectivos
					$this->load->model('m_ciclo_lectivo');
					
					//Busco al ciclo lectivo para corroborar que exista
					$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
					
					//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero.
					if($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0){
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado.
						//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								//Le paso a la vista el id del ciclo lectivo vigente
								$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								//No hay ciclo lectivo seleccionado ni vigente
								$datos['idCicloLectivoSel'] = 0;
							}
						}else{
							//Le paso a la vista el id del ciclo lectivo pasado por la url
							$datos['idCicloLectivoSel'] = $idCicloLectivo;
						}
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Restricciones a la consulta de docentes segun el ciclo lectivo pasado y el alumno logueado. Y tambien a las divisiones que cursa el alumno.
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						$restriccion1 = "";
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								$restriccion1 = " AND curso.idCicloLectivo=0";
							}
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;
						}
						
						//Busco las divisiones a la que pertenece el alumno logueado.
						$restriccion2 = " AND alumnoxdivision.idAlumno=".$this->session->userdata('idAlumnoLog');
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo el modelo donde estan los datos de los alumnos asignados a una division para pedirle todas las divisiones a la que asiste el alumno logueado.
						$this->load->model('m_alumnoxdivision');
						
						//Busco todas las divisiones segun las restricciones
						$listadoDivisiones = $this->m_alumnoxdivision->buscarActivos($restriccion2);
						
						//Le paso el listado de todas las divisiones donde esta asignado el alumno a la vista para que los muestre en un combo de filtrado
						$datos['divisiones'] = $listadoDivisiones;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo el modelo donde estan los datos de los docentes asignados a una asignatura para buscar todos los docentes del ciclo pasado por la url
						$this->load->model('m_asignacion_docente');
						
						//Busco todos los docentes que dictan alguna asignatura al alumno logueado en el ciclo seleccionado
						$listadoDocentes = $this->m_asignacion_docente->buscarActivos(" AND asignatura.idDivision IN (SELECT alumnoxdivision.idDivision FROM alumnoxdivision WHERE alumnoxdivision.idAlumno=".$this->session->userdata('idAlumnoLog')." $restriccion1 AND alumnoxdivision.estado=1)", " ORDER BY persona.apellido ASC, persona.nombre ASC", " GROUP BY idPersona");
						
						//Le paso el listado de todos los docentes del alumno logueado.
						$datos['docentes'] = $listadoDocentes;
						
						//Cargo la vista donde se muestra los docentes del alumno logueado y la guardo en una variable para pasarsela a la vista principal
						$datosPrincipal['vista'] = $this->load->view('v_alumnos_mis_docentes', $datos, true);
						
						//Cargo la vista principal con los datos de la vista
						$this->load->view('v_sistema', $datosPrincipal);
					} else {
						//El registro no existe.
						//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
						$this->session->sess_destroy();
						//Lo redirigimos al login
						redirect(site_url("inicio"));
					}
				} else {
					//No se han pasado los parametros necesarios para visualizar los registros.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//No se han inicializado los parametros necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra las asignaturas del alumno logueado segun la division pasada por la url (primer parametro).
	//Ademas muestra todos los datos una asignatura en cuestion (segundo parametro) y mediante el tercer parametro muestra diferente informacion de estas, 
	//como ser: las clases, evaluaciones, etc.
	//Ultima verificación:
	function misAsignaturas($idDivision=null, $idAsignatura=null, $tipo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que sea alumno.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que las variables de sesion del alumno esten creadas e inicializadas.
			if(is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Tercera comprobacion: Que idDivision pasado sea numerico y mayor o igual que cero. Igual que cero quiere decir que hay que seleccionar la division que cursa el alumno del ciclo vigente.
				//Que idAsignatura pasado sea numerico y mayor o igual que cero. Que tipo pasado sea numerico y mayor o igual que uno y menor o igual que cinco.
				if(is_numeric($idDivision) && $idDivision>=0 && is_numeric($idAsignatura) && $idAsignatura>=0 && is_numeric($tipo) && $tipo>=1 && $tipo<=5){
					//Cargo el modelo donde estan los datos de las divisiones
					$this->load->model('m_division');
					
					//Busco a la division para corroborar que exista
					$division = $this->m_division->get($idDivision);
					
					//Cargo el modelo donde estan los datos de las asignaturas
					$this->load->model('m_asignatura');
					
					//Busco a la asignatura para corroborar que exista
					$asignatura = $this->m_asignatura->get($idAsignatura);
					
					//Tercera comprobacion: Que la division pasada por la url sea existente o bien el id sea igual a cero. Lo mismo para la asignatura.
					if(($division->num_rows() == 1 || $idDivision==0) && ($asignatura->num_rows() == 1 || $idAsignatura==0)){
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Si la division pasada por la url es igual a cero entonces hay que seleccionar la division cursada por el alumno en el ciclo vigente,
						//en caso contrario la division que haya sido pasada
						if($idDivision==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								//Le paso a la vista el id del ciclo lectivo vigente
								$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								//No hay ciclo lectivo seleccionado ni vigente
								$datos['idCicloLectivoSel'] = 0;
							}
						}else{
							//Le paso a la vista el id del ciclo lectivo de la division pasada por la url
							$datos['idCicloLectivoSel'] = $division->row()->idCicloLectivo;
						}
						
						//Le paso a la vista el id de la asignatura seleccionada
						$datos['idAsignaturaSel'] = $idAsignatura;
						
						//Le paso a la vista el tipo seleccionado
						$datos['tipoSel'] = $tipo;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Restricciones a la consulta de divisiones y asignaturas cursadas segun el alumno logueado.
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Busco las divisiones a la que pertenece el alumno logueado.
						$restriccion2 = " AND alumnoxdivision.idAlumno=".$this->session->userdata('idAlumnoLog');
						
						//Cargo el modelo donde estan los datos de los alumnos asignados a una division para pedirle todas las divisiones a la que asiste el alumno logueado.
						$this->load->model('m_alumnoxdivision');
						
						//Busco todas las divisiones segun las restricciones
						$listadoDivisiones = $this->m_alumnoxdivision->buscarActivos($restriccion2);
						
						//Le paso el listado de todas las divisiones donde esta asignado el alumno a la vista para que los muestre en un combo de filtrado
						$datos['divisiones'] = $listadoDivisiones;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo los modelos necesarios
						$this->load->model('m_asignatura');
						$this->load->model('m_clase');
						$this->load->model('m_contenido_educativo');
						$this->load->model('m_evaluacion');
						$this->load->model('m_calificacion_evaluacion');
						$this->load->model('m_asignacion_docente');
						$this->load->model('m_modulo');
						$this->load->model('m_turno');
						
						//Cargo el modelo donde estan los datos de los turnos registrados para pedirle un listado con todos ellos
						$this->load->model('m_turno');
						
						//Busco todos los turnos tanto activos como inactivos, menos los borrados(-1)
						$listadoTurnos = $this->m_turno->buscarActivos();
						
						//Le paso el listado de todas los turnos la vista para que muestres los horarios en tablas por turnos
						$datos['turnos'] = $listadoTurnos;
						
						//Cargo la vista donde se muestra las asignaturas del alumno logueado y la guardo en una variable para pasarsela a la vista principal
						$datosPrincipal['vista'] = $this->load->view('v_alumnos_mis_asignaturas', $datos, true);
						
						//Cargo la vista principal con los datos de la vista
						$this->load->view('v_sistema', $datosPrincipal);
					} else {
						//El registro no existe.
						//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
						$this->session->sess_destroy();
						//Lo redirigimos al login
						redirect(site_url("inicio"));
					}
				} else {
					//No se han pasado los parametros necesarios para visualizar los registros.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//No se han inicializado los parametros necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todas las sanciones del alumno logueado
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar todas las sanciones existentes del ciclo vigente
	//Si idCicloLectivo es distinto de cero, hay que mostrar solo las sanciones del ciclo en cuestion.
	function misSanciones($idCicloLectivo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Que idAlumnoLog sea mayor que cero.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a la consulta de la busqueda de sanciones segun el ciclo lectivo seleccionado y persona (Se muestran en la tabla)
					//Y tambien a las divisiones que cursa el alumno.
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					$restriccion2= "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
					
					$restriccion2 = " AND alumno.idAlumno=".$this->session->userdata('idAlumnoLog');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los alumnos asignados a una division para pedirle todas las divisiones a la que asiste el alumno logueado.
					$this->load->model('m_alumnoxdivision');
					
					//Busco todas las divisiones segun las restricciones
					$listadoDivisiones = $this->m_alumnoxdivision->buscarActivos($restriccion2);
					
					//Le paso el listado de todas las divisiones donde esta asignado el alumno a la vista para que los muestre en un combo de filtrado
					$datos['divisiones'] = $listadoDivisiones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las sanciones registradas para pedirle un listado con todas ellas segun las restricciones
					$this->load->model('m_sancion');
					
					//Busco todas las sanciones segun las restricciones correspondientes, tanto activas como inactivas, menos los borrados(-1)
					$listadoSanciones = $this->m_sancion->buscarActivos($restriccion . $restriccion2);
					
					//Le paso el listado de todas las sanciones a la vista para que las muestre en una tabla
					$datos['sanciones'] = $listadoSanciones;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de sanciones y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_sanciones_alumnos', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos de la sancion pasada por la url
	//El segundo parametro solo se utiliza para volver a la pantalla consultar con el mismo criterio de filtrado
	function visualizarSancion($idSancion=null, $idCicloLectivo=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que idSancion pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor o igual que cero. Que idAlumnoLog sea mayor que cero.
			if(is_numeric($idSancion) && $idSancion>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Cargo el modelo donde estan los datos de las sanciones registradas
				$this->load->model('m_sancion');
				
				//Busco a la sancion que hay que visualizar para comprobar que existe
				$sancion = $this->m_sancion->get($idSancion);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los alumnos
				$this->load->model('m_alumno');
				
				//Busco al alumno para corroborar que exista
				$alumno = $this->m_alumno->get($this->session->userdata('idAlumnoLog'));
				
				//Tercera comprobacion: Que la sancion sea existente. Ademas que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Que el alumno sea existente.
				if($sancion->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && $alumno->num_rows() == 1){
					//Le paso la sancion a visualizar a la vista
					$datos['sancionSel'] = $sancion;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo actual.
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado.
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Cargo el modelo donde estan los datos de los alumnos x division
					$this->load->model('m_alumnoxdivision');
					
					//Busco al alumno x division para poder obtener las sanciones anteriores y siguientes.
					$alumnoxdivision = $this->m_alumnoxdivision->get2($datos['idCicloLectivoSel'], $this->session->userdata('idAlumnoLog'));
					
					//Busco a la sancion siguiente de la que hay que visualizar
					$idSancionSig = $this->m_sancion->getContiguoActivo($idSancion,1, $datos['idCicloLectivoSel'], $alumnoxdivision->row()->idAxD);
					
					//Le paso la sancion siguiente de la que hay que visualizar a la vista
					$datos['idSancionSig'] = $idSancionSig;
					
					//Busco a la sancion anterior del que hay que visualizar
					$idSancionAnt = $this->m_sancion->getContiguoActivo($idSancion,-1, $datos['idCicloLectivoSel'], $alumnoxdivision->row()->idAxD);
									
					//Le paso la sancion anterior de la que hay que visualizar a la vista
					$datos['idSancionAnt'] = $idSancionAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo la vista donde se muestra el formulario para visualizar una sancion y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_sanciones_alumnos_visualizar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para visualizar un registro
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para visualizar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todas las asistencias e inasistencias del alumno logueado
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar todas las asistencias existentes del ciclo vigente. Nada si no hay vigente.
	//Si idCicloLectivo es distinto de cero, hay que mostrar solo las asistencias del ciclo en cuestion.
	function miAsistencia($idCicloLectivo=null, $idTipoInasistencia=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Ademas que idTipoInasistencia tambien lo sea. Que idAlumnoLog sea mayor que cero.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTipoInasistencia) && $idTipoInasistencia>=0 && is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los tipos de inasistencias (Estado detalle asistencia)
				$this->load->model('m_tipo_inasistencia');
				
				//Busco al tipo de inasistencia para corroborar que exista
				$tipoInasistencia = $this->m_tipo_inasistencia->get($idTipoInasistencia);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el tipo de inasistencia.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($tipoInasistencia->num_rows() == 1 || $idTipoInasistencia==0)){				
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del tipo de inasistencia pasado por la url
					$datos['idTipoInasistenciaSel'] = $idTipoInasistencia;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a la consulta de la busqueda de asistencias segun el ciclo lectivo seleccionado, tipo de inasistencia y alumno (Se muestran en la tabla)
					//Y tambien a las divisiones que cursa el alumno.
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					$restriccion2= "";
					$restriccion3= "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
					
					//Restriccion para solo ver las asistencias del alumno logueado.
					$restriccion2 = " AND alumno.idAlumno=".$this->session->userdata('idAlumnoLog');
					
					//Restriccion al tipo de inasistencia pasado por la url.
					if($idTipoInasistencia != 0){
						$restriccion3 = " AND estadodetalleasistencia.idEstadoDetalleAsistencia=".$idTipoInasistencia;
					}
					
					//Le paso a la vista las restricciones
					$datos['restricciones'] = $restriccion.$restriccion2;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los alumnos asignados a una division para pedirle todas las divisiones a la que asiste el alumno logueado.
					$this->load->model('m_alumnoxdivision');
					
					//Busco todas las divisiones segun las restricciones
					$listadoDivisiones = $this->m_alumnoxdivision->buscarActivos($restriccion2);
					
					//Le paso el listado de todas las divisiones donde esta asignado el alumno a la vista para que los muestre en un combo de filtrado
					$datos['divisiones'] = $listadoDivisiones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los tipos de inasistencias
					$this->load->model('m_tipo_inasistencia');
					
					//Busco todos los tipos de inasistencias activos
					$listadoTiposInasistencias = $this->m_tipo_inasistencia->buscarActivos();
					
					//Le paso el listado de todos los tipos de inasistencias a la vista para que los muestre en el combo de filtrado
					$datos['tiposInasistencias'] = $listadoTiposInasistencias;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los detalles de asistencias tomadas registradas para pedirle un listado con todas ellas segun las restricciones
					$this->load->model('m_detalle_asistencia');
					
					//Busco todas las asistencias segun las restricciones correspondientes, tanto activas como inactivas, menos los borrados(-1)
					$listadoAsistencias = $this->m_detalle_asistencia->buscarActivos($restriccion . $restriccion2 . $restriccion3);
					
					//Le paso el listado de todas las asistencias a la vista para que las muestre en una tabla
					$datos['asistencias'] = $listadoAsistencias;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de asistencias y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_alumnos_mi_asistencia', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra el horario del alumno logueado
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar el horario del ciclo vigente
	//Si idCicloLectivo es distinto de cero, hay que mostrar solo el horario del ciclo en cuestion.
	function misHorarios($idCicloLectivo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoAlumno') == '1'){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Que idAlumnoLog sea mayor que cero.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a la consulta de la busqueda de cursos y divisiones segun el ciclo lectivo seleccionado y persona (Se muestran en el combo)
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					$restriccion2= "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
					
					$restriccion2 = " AND alumno.idAlumno=".$this->session->userdata('idAlumnoLog');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los alumnos asignados a una division para pedirle todas las divisiones a la que asiste el alumno logueado.
					$this->load->model('m_alumnoxdivision');
					
					//Busco todas las divisiones segun las restricciones
					$listadoDivisiones = $this->m_alumnoxdivision->buscarActivos($restriccion2);
					
					//Le paso el listado de todas las divisiones donde esta asignado el alumno a la vista para que los muestre en un combo de filtrado
					$datos['divisiones'] = $listadoDivisiones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los turnos registrados para pedirle un listado con todos ellos
					$this->load->model('m_turno');
					
					//Busco todos los turnos activos
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todas los turnos la vista para que muestres los horarios en tablas por turnos
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo el modelo donde estan los datos de los modulos registrados para pedirle un listado con todos ellos
					$this->load->model('m_modulo');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					//Cargo la vista donde se muestra la tabla de horarios y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_alumnos_mis_horarios', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra los tutores del alumno pasado por la url.
	//Ultima verificación: 01-03-2015
	function tutores($idAlumno=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion. Que tenga los permisos necesarios para poder ver los tutores de un alumno.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idAlumno sea numerico y mayor que cero.
			if(is_numeric($idAlumno) && $idAlumno>0){
				//Cargo el modelo donde estan los datos de los alumnos registrados
				$this->load->model('m_alumno');
				
				//Busco al alumno para comprobar que existe.
				$alumno = $this->m_alumno->get($idAlumno);
				
				//Tercera comprobacion: Que el alumno pasado por la url sea existente.
				if($alumno->num_rows() == 1){
					//Busco todos los tutores del alumno
					$listadoTutores = $this->m_tutorxalumno->buscarTutoresActivos(" AND tutorxalumno.idAlumno=".$idAlumno);
					
					//Le paso el listado de todos los tutores a la vista para que muestre los perfiles
					$datos['tutores'] = $listadoTutores;
					
					//Le paso el alumno a la vista.
					$datos['alumnoSel'] = $alumno;
					
					//Cargo la vista donde se muestra los perfiles de los tutores del alumno y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_alumnos_tutores', $datos, true);
					
					//Cargo la vista principal con los datos de la vista perfil
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El alumno no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//No se han inicializado los parametros necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
}